﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using Lari.Services.DataContract;
//using System.Data.Common;
//using System.Data;
//using Lari.Framework.Exceptions;

//namespace Lari.DataAccess
//{
//    public static class MasterDataAccess 
//    {
//        private static void OpenConnection( LariDBContext db)
//        {
//            if (db != null && db.Connection.State == ConnectionState.Closed)
//                db.Connection.Open();
//        }
//        private static void RollbackTransaction(DbTransaction tx)
//        {
//            if (tx != null)
//                tx.Rollback();
//        }
        
//        #region facility Master

//        public static List<Facility> AllFacilities()
//        {
//            List<Facility> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Facilities.ToList();
//            }
//            return retValue;
//        }
//        public static Facility SaveFacility(Facility f)
//        {
//            DbTransaction tx = default(DbTransaction);

//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);

//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        if (f.ID == default(int))
//                        {
//                            if (db.Facilities.Any(s => s.Name.ToUpper() == f.Name))
//                                throw new LariException("Facility already exists.", false);

//                            db.Facilities.AddObject(f);
//                        }
//                        else
//                        {
//                            if (db.Facilities.Where(s => s.ID != f.ID).Any(s => s.Name.ToUpper() == f.Name.ToUpper()))
//                                throw new LariException("Facility already exists.", false);

//                            if (f.IsDeleted && db.UsersFacilities.Any(s => s.FacilityID == f.ID))
//                                throw new LariException("Facility is already linked with user(s) - can not be deleted.", false);

//                            db.Facilities.ApplyChanges(f);
//                        }

//                        db.SaveChanges();
//                        tx.Commit();

//                    }

//                }
//            }
//            catch
//            {
//                tx.Rollback();
//                throw;

//            }

//            return f;
//        }

//        #endregion

//        #region Role Master
//        public static List<Role> AllRoles()
//        {
//            List<Role> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Roles.ToList();
//            }
//            return retValue;
//        }
//        public static List<Access> AllAccesses()
//        {
//            List<Access> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Accesses.ToList();
//            }
//            return retValue;
//        }
//        public static List<string> AccessForRole(int roleId)
//        {
//            List<string> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.RoleAccesses.Where(s => s.RoleID == roleId).Select(y => y.Access).ToList();
//            }
//            return retValue;
//        }

//        public static void SaveRole(int selectedroleId, string roleName, List<string> assignesAssess, int? opid)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {

//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {

//                        if (selectedroleId == default(int))
//                        {
//                            if (db.Roles.Any(s => s.Name.ToUpper() == roleName.ToUpper()))
//                                throw new LariException("Role already exists.", false);

//                            db.Roles.AddObject(new Role() { Name = roleName, TxnCrDate = DateTime.Now, TxnCrUser = opid });
//                            assignesAssess.ForEach(s =>
//                            {
//                                db.RoleAccesses.AddObject(new RoleAccess() { Access = s, RoleID = selectedroleId });

//                            });

//                        }
//                        else
//                        {

//                            if (db.Roles.Where(s => s.RoleID != selectedroleId).Any(y => y.Name.ToUpper() == roleName))
//                                throw new LariException("Role already exists.", false);

//                            var r = db.Roles.Where(s => s.RoleID == selectedroleId).Single();
//                            r.Name = roleName;
//                            r.Txndate = DateTime.Now;
//                            r.TxnUser = opid;

//                            db.Roles.ApplyChanges(r); // change neme
//                            db.RoleAccesses.Where(s => s.RoleID == selectedroleId).ToList().ForEach(y =>
//                            {
//                                db.RoleAccesses.DeleteObject(y);

//                            }); // delete existing one

//                            // add new
//                            assignesAssess.ForEach(s =>
//                            {
//                                db.RoleAccesses.AddObject(new RoleAccess() { RoleID = selectedroleId, Access = s });

//                            });



//                        }
//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }
//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;

//            }
//        }

//        #endregion

//        #region Religion
//        public static List<Religion> AllReligion()
//        {
//            List<Religion> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Religions.ToList();
//            }
//            return retValue;
//        }
//        public static Religion GetReligion(string code)
//        {
//            Religion retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Religions.Where(s => s.Code == code).Single();
//            }
//            return retValue;
//        }
//        public static void MarkReligionAsDefault(string code, int? opid)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        var rel = db.Religions.Where(s => s.Code == code).Single();
//                        if (rel.IsDefault)
//                        {
//                            rel.IsDefault = false;
//                            rel.Txndate = DateTime.Now;
//                            rel.TxnUser = opid;
//                            db.SaveChanges();
//                            tx.Commit();
//                            return;
//                        }



//                        foreach (Religion r in db.Religions.Where(s => s.IsDefault == true))
//                        {
//                            r.IsDefault = false;
//                            r.Txndate = DateTime.Now;
//                            r.TxnUser = opid;

//                        }
//                        db.SaveChanges();
//                        //var rel = db.Religions.Where(s => s.Code == code).Single();
//                        rel.IsDefault = true;
//                        rel.Txndate = DateTime.Now;
//                        rel.TxnUser = opid;
//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;

//            }
//        }

//        public static void InsertReligion(Religion religion, int? opid)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {


//                        if (db.Religions.Any(s => s.Code.ToUpper() == religion.Code.ToUpper()) || db.Religions.Any(s => s.Name.ToUpper() == religion.Name.ToUpper()))
//                            throw new LariException("Religion already exists.", false);

//                        religion.TxnCrDate = DateTime.Now;
//                        religion.TxnCrUser = opid;
//                        db.Religions.AddObject(religion);



//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;

//            }

//        }
//        public static void UpdateReligion(Religion religion, int? opid)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {


//                        if (db.Religions.Where(s => s.Code != religion.Code).Any(a => a.Name.ToUpper() == religion.Name.ToUpper()))
//                            throw new LariException("Religion already exists.", false);
//                        religion.Txndate = DateTime.Now;
//                        religion.TxnUser = opid;
//                        db.Religions.ApplyChanges(religion);


//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }
//        #endregion

//        #region County Master
//        public static List<Country> AllCountries()
//        {
//            List<Country> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Countries.ToList();
//            }
//            return retValue;
//        }
//        public static Country GetCountry(string countryCode)
//        {
//            Country retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Countries.Where(s => s.Code == countryCode).Single();
//            }
//            return retValue;
//        }
//        public static void MakeCountryDefault(string countryCode, int? opid)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        var rel = db.Countries.Where(s => s.Code == countryCode).Single();
//                        if (rel.IsDefault)
//                        {
//                            rel.IsDefault = false;
//                            rel.Txndate = DateTime.Now;
//                            rel.TxnUser = opid;
//                            db.SaveChanges();
//                            tx.Commit();
//                            return;
//                        }


//                        foreach (Country r in db.Countries.Where(s => s.IsDefault == true))
//                        {
//                            r.IsDefault = false;
//                            r.Txndate = DateTime.Now;
//                            r.TxnUser = opid;
//                        }
//                        db.SaveChanges();
//                        //var rel = db.Countries.Where(s => s.Code == countryCode).Single();
//                        rel.IsDefault = true;
//                        rel.Txndate = DateTime.Now;
//                        rel.TxnUser = opid;
//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;

//            }
//        }

//        public static void InsertCountry(Country country, int? opid)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {

//                        if (db.Countries.Any(s => s.Name.ToUpper() == country.Name.ToUpper()) || db.Countries.Any(s => s.Code.ToUpper() == country.Code.ToUpper()))
//                            throw new LariException("Country already exists.", false);

//                        country.TxnCrDate = DateTime.Now;
//                        country.TxnCrUser = opid;
//                        db.Countries.AddObject(country);
//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }
//        public static void UpdateCountry(Country country, int? opid)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {

//                        if (db.Countries.Where(a => a.Code.ToUpper() != country.Code.ToUpper()).Any(s => s.Name.ToUpper() == country.Name.ToUpper()))
//                            throw new LariException("Country already exists.", false);

//                        country.Txndate = DateTime.Now;
//                        country.TxnUser = opid;
//                        db.Countries.ApplyChanges(country);
//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }

//        }
//        #endregion

//        #region Gender master
//        public static List<Gender> GetAllGenders()
//        {
//            List<Gender> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Genders.ToList();
//            }
//            return retValue;
//        }
//        public static Gender GetGender(string genderCode)
//        {
//            Gender retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Genders.Where(s => s.Code == genderCode).Single();
//            }
//            return retValue;
//        }

//        public static void MakeGenderDefault(string genderCode)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        var rel = db.Genders.Where(s => s.Code == genderCode).Single();
//                        if (rel.IsDefault)
//                        {
//                            rel.IsDefault = false;

//                            db.SaveChanges();
//                            tx.Commit();
//                            return;
//                        }
//                        foreach (Gender r in db.Genders.Where(s => s.IsDefault == true))
//                        {
//                            r.IsDefault = false;

//                        }
//                        db.SaveChanges();
//                        //var rel = db.Genders.Where(s => s.Code == genderCode).Single();
//                        rel.IsDefault = true;

//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }
//        public static void InsertGender(Gender gender)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        if (db.Genders.Any(s => s.Name.ToUpper() == gender.Name.ToUpper()) || db.Genders.Any(s => s.Code.ToUpper() == gender.Code.ToUpper()))
//                            throw new LariException("Gender already exists.", false);

//                        db.Genders.AddObject(gender);
//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }
//        public static void UpdateGender(Gender gender)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {

//                        if (db.Genders.Where(a => a.Code.ToUpper() != gender.Code.ToUpper()).Any(s => s.Name.ToUpper() == gender.Name.ToUpper()))
//                            throw new LariException("Gender already exists.", false);

//                        db.Genders.ApplyChanges(gender);
//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }


//        #endregion

//        #region State Master

//        public static List<State> GetAllState()
//        {
//            List<State> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.States.ToList();
//            }
//            return retValue;
//        }
//        public static State GetState(string stateCode)
//        {
//            State retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.States.Where(s => s.Code == stateCode).Single();
//            }
//            return retValue;
//        }
//        public static void MakeStateDefault(string stateCode)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        var rel = db.States.Where(s => s.Code == stateCode).Single();
//                        if (rel.IsDefault)
//                        {
//                            rel.IsDefault = false;

//                            db.SaveChanges();
//                            tx.Commit();
//                            return;
//                        }

//                        foreach (State r in db.States.Where(s => s.IsDefault == true))
//                        {
//                            r.IsDefault = false;

//                        }
//                        db.SaveChanges();
//                        //var rel = db.States.Where(s => s.Code == stateCode).Single();
//                        rel.IsDefault = true;

//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch 
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }
//        public static void InsertState(State state)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        if (db.States.Any(s => s.Name.ToUpper() == state.Name.ToUpper()) || db.States.Any(s => s.Code.ToUpper() == state.Code.ToUpper()))
//                            throw new LariException("State already exists.", false);

//                        db.States.AddObject(state);
//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }
//        public static void UpdateState(State state)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {

//                        if (db.States.Where(a => a.Code.ToUpper() != state.Code.ToUpper()).Any(s => s.Name.ToUpper() == state.Name.ToUpper()))
//                            throw new LariException("State already exists.", false);

//                        db.States.ApplyChanges(state);
//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }



//        #endregion

//        #region MaritalStatus Master
//        public static List<MaritalStatus> GetAllMaritalStatus()
//        {
//            List<MaritalStatus> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.MaritalStatuses.ToList();
//            }
//            return retValue;
//        }

//        public static MaritalStatus GetMaritalStatus(string statusCode)
//        {
//            MaritalStatus retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.MaritalStatuses.Where(s => s.Code == statusCode).Single();
//            }
//            return retValue;
//        }
//        public static void MakeMaritalStatusDefault(string statusCode)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        var rel = db.MaritalStatuses.Where(s => s.Code == statusCode).Single();
//                        if (rel.IsDefault)
//                        {
//                            rel.IsDefault = false;

//                            db.SaveChanges();
//                            tx.Commit();
//                            return;
//                        }

//                        foreach (MaritalStatus r in db.MaritalStatuses.Where(s => s.IsDefault == true))
//                        {
//                            r.IsDefault = false;

//                        }
//                        db.SaveChanges();
//                        //var rel = db.MaritalStatuses.Where(s => s.Code == statusCode).Single();
//                        rel.IsDefault = true;

//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }

//        public static void InsertMaritalStatus(MaritalStatus status)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        if (db.MaritalStatuses.Any(s => s.Name.ToUpper() == status.Name.ToUpper()) || db.MaritalStatuses.Any(s => s.Code.ToUpper() == status.Code.ToUpper()))
//                            throw new LariException("Status already exists.", false);

//                        db.MaritalStatuses.AddObject(status);
//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }

//        }
//        public static void UpdateMaritalStatus(MaritalStatus status)
//        {
//            DbTransaction tx = default(DbTransaction);
//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);
//                    using (tx = db.Connection.BeginTransaction())
//                    {

//                        if (db.MaritalStatuses.Where(a => a.Code.ToUpper() != status.Code.ToUpper()).Any(s => s.Name.ToUpper() == status.Name.ToUpper()))
//                            throw new LariException("Status already exists.", false);

//                        db.MaritalStatuses.ApplyChanges(status);
//                        db.SaveChanges();
//                        tx.Commit();
//                    }
//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }

//        #endregion

//        #region TitleMaster Members
//        public static List<Title> GetAllTitles()
//        {
//            List<Title> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Titles.ToList();
//            }
//            return retValue;
//        }

//        public static Title GetTitle(int id)
//        {
//            Title retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Titles.Where(s => s.ID == id).Single();
//            }
//            return retValue;
//        }
//        public static void SaveTitle(Title title)
//        {
//            DbTransaction tx = default(DbTransaction);

//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);

//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        if (title.ID == default(int))
//                        {
//                            if (db.Titles.Any(s => s.Name.ToUpper() == title.Name))
//                                throw new LariException("Title already exists.", false);

//                            db.Titles.AddObject(title);
//                        }
//                        else
//                        {
//                            if (db.Titles.Where(s => s.ID != title.ID).Any(s => s.Name.ToUpper() == title.Name.ToUpper()))
//                                throw new LariException("Tille already exists.", false);


//                            db.Titles.ApplyChanges(title);
//                        }

//                        db.SaveChanges();
//                        tx.Commit();

//                    }


//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }


//        #endregion

//        #region Bloodgroup Master
        
//        public static List<BloodGroup> GetAllBloodGroup()
//        {
//            List<BloodGroup> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                        retValue = db.BloodGroups.ToList();
//            }
//            return retValue;
//        }
//        public static BloodGroup GetBloodGroup(int id)
//        {
//            BloodGroup retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.BloodGroups.Where(s => s.ID == id).Single();
//            }
//            return retValue;
//        }
//        public static void SaveBloodGroup(BloodGroup data)
//        {
//            DbTransaction tx = default(DbTransaction);

//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);

//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        if (data.ID == default(int))
//                        {
//                            if (db.BloodGroups.Any(s => s.Group.ToUpper() == data.Group))
//                                throw new LariException("Bloodgroup already exists.", false);

//                            db.BloodGroups.AddObject(data);
//                        }
//                        else
//                        {
//                            if (db.BloodGroups.Where(s => s.ID != data.ID).Any(s => s.Group.ToUpper() == data.Group.ToUpper()))
//                                throw new LariException("Bloodgroup already exists.", false);


//                            db.BloodGroups.ApplyChanges(data);
//                        }

//                        db.SaveChanges();
//                        tx.Commit();

//                    }


//                }


//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }
//        #endregion

//        #region Designation Master
//        public static List<Designation> GetAllDesignatiuons()
//        {
//            List<Designation> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Designations.ToList();
//            }
//            return retValue;
//        }
//        public static Designation GetDesignation(int id)
//        {
//            Designation retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Designations.Where(s => s.ID == id).Single();
//            }
//            return retValue;
//        }
//        public static void SaveDesignation(Designation data)
//        {
//            DbTransaction tx = default(DbTransaction);

//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);

//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        if (data.ID == default(int))
//                        {
//                            if (db.Designations.Any(s => s.Name.ToUpper() == data.Name))
//                                throw new LariException("Designation already exists.", false);

//                            db.Designations.AddObject(data);
//                        }
//                        else
//                        {
//                            if (db.Designations.Where(s => s.ID != data.ID).Any(s => s.Name.ToUpper() == data.Name.ToUpper()))
//                                throw new LariException("Designation already exists.", false);


//                            db.Designations.ApplyChanges(data);
//                        }

//                        db.SaveChanges();
//                        tx.Commit();

//                    }


//                }


//            }
//            catch 
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }
//        #endregion

//        #region Department master
//        public static List<Department> GetAllDepartments()
//        {
//            List<Department> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Departments.ToList();
//            }
//            return retValue;
//        }
//        public static Department GetDepartment(int id)
//        {
//            Department retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.Departments.Include("Designations").Where(s => s.ID == id).Single();
//            }
//            return retValue;
//        }

//        public static void SaveDepartment(Department data)
//        {
//            DbTransaction tx = default(DbTransaction);

//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);

//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        if (data.ID == default(int))
//                        {
//                            if (db.Departments.Any(s => s.Name.ToUpper() == data.Name))
//                                throw new LariException("Department already exists.", false);
//                        }
//                        else
//                        {
//                            if (db.Departments.Where(s => s.ID != data.ID).Any(s => s.Name.ToUpper() == data.Name.ToUpper()))
//                                throw new LariException("Department already exists.", false);
//                        }

//                        db.Departments.ApplyChanges(data);
//                        db.SaveChanges();

//                        tx.Commit();

//                    }

//                }

//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }

//        #endregion

//        #region Employee types master
//        public static List<EmployeeType> GetAllEmployeeTypes()
//        {
//            List<EmployeeType> retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.EmployeeTypes.ToList();
//            }
//            return retValue;
//        }
//        public static EmployeeType GetEmployeeType(int id)
//        {
//            EmployeeType retValue;
//            using (LariDBContext db = new LariDBContext())
//            {
//                retValue = db.EmployeeTypes.Where(s => s.ID == id).Single();
//            }
//            return retValue;
//        }
//        public static void SaveEmployeeType(EmployeeType data)
//        {
//            DbTransaction tx = default(DbTransaction);

//            try
//            {
//                using (LariDBContext db = new LariDBContext())
//                {
//                    OpenConnection(db);

//                    using (tx = db.Connection.BeginTransaction())
//                    {
//                        if (data.ID == default(int))
//                        {
//                            if (db.EmployeeTypes.Any(s => s.Name.ToUpper() == data.Name))
//                                throw new LariException("Employee type already exists.", false);
//                        }
//                        else
//                        {
//                            if (db.EmployeeTypes.Where(s => s.ID != data.ID).Any(s => s.Name.ToUpper() == data.Name.ToUpper()))
//                                throw new LariException("Employee type already exists.", false);
//                        }

//                        db.EmployeeTypes.ApplyChanges(data);
//                        db.SaveChanges();

//                        tx.Commit();

//                    }

//                }

//            }
//            catch
//            {
//                RollbackTransaction(tx);
//                throw;
//            }
//        }

//        #endregion



        
//    }
//}